package S_Algorithm;

import java.util.Scanner;

public class DiskManage {
	public Object[] Manage(int m,int position,int[] a) {
             Object[] o = new Object[8]; //返回的结果
//		int a[] = new int[101]; // 特别提示a[0]用来存放磁头的初始位置
		int n = 10; // 用来统计需求量
//		int m = 0; // 用来判断用户的选择
		double sum = 0; // 为FCFS算法准备的 用来计算总的寻到长度
		double temp = 0;
//		int position = 0; // 用来存放磁头的出事位置
		SSTF sstf = new SSTF();
		SCAN scan = new SCAN();
		CSCAN cscan = new CSCAN();
//		System.out.println("请输入磁盘请求的个数：");
//		try {
//			Scanner reader = new Scanner(System.in);
//			n = reader.nextInt();
//		} catch (Exception e) {
//		}
//		System.out.println("请输入磁盘请求序列：");
//		Scanner reader = new Scanner(System.in);
//		for (int i = 1; i <= n; i++) {
//			try {
//				a[i] = reader.nextInt();
//			} catch (Exception e) {
//			}
//
//		}
               
		System.out.print("请输入磁头的初始位置：");
//		try {
//			Scanner re = new Scanner(System.in);
//			a[0] = re.nextInt();
//			position = a[0];
//		} catch (Exception e) {
//		}
			a[0] = position;
		System.out.println("磁头的初始位置为" + a[0]);
//		for (int i = 1; i <= n; i++) {
//			System.out.print(a[i] + "    ");
//		}

		System.out.println("******************************************************************");
		System.out.println("提示：磁头的序列范围1~200！磁头从小号到大号寻道！");
		System.out.println("请输入相应的选择操作：：");
		System.out.println("1、先来先服务算法（FCFS）");
		System.out.println("2、最短寻道时间优先算法（SSTF）");
		System.out.println("3、电梯调度算法（SCAN）");
		System.out.println("4、循环扫描算法（CSCAN）");
		Scanner read = new Scanner(System.in);
//		try {
//			m = read.nextInt();
//		} catch (Exception e) {
//		}
		System.out.println("m的值为" + m);
//		read.close();

//		switch (m) {
//		case 1:
                
			sum = 0;
			System.out.println("FCFS算法序列：");
			for (int i = 1; i <= n; i++) {
				System.out.print(a[i] + "    ");
                                
                                 if (i % 10 == 0) {
                System.out.println();
            }
				temp = a[i] - a[i - 1];
				if (temp >= 0)
					;
				else if (temp < 0) {
					temp = -temp;
				}
				sum = sum + temp;
			}
			System.out.println();
			System.out.println("sum的值为" + sum);
			System.out.println("平均寻到长度为" + sum / n);
                        o[0]=a;  
                        o[1]=sum; 
//			break;
//		case 2:
			sstf.Calculate(a, n, position,o);
//			break;
//		case 3:
			scan.Check(a, n, position,o);
//			break;
//		case 4:
			cscan.Check(a, n, position,o);
//			break;
//		}
            
            
               return o;
	}

}







